package org.ehe.erp.domain.stock.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ehe.common.core.validate.AddGroup;
import org.ehe.common.core.validate.EditGroup;
import org.ehe.common.mybatis.core.domain.BaseEntity2;
import org.ehe.erp.domain.stock.ErpStock;
import org.ehe.erp.domain.stock.ErpStockCheck;

import java.math.BigDecimal;
import java.util.Date;

/**
 * ERP 库存盘点单业务对象
 * @author :zhangnn
 * @className :ErpStockCheckBo
 * @description: TODO
 * @date 2025-08-28 17:29:33
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ErpStockCheck.class, reverseConvertGenerate = false)
public class ErpStockCheckBo extends BaseEntity2 {
    /**
     * 盘点编号
     */
    @NotNull(message = "盘点编号不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 盘点单号
     */
    @NotBlank(message = "盘点单号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String no;

    /**
     * 盘点时间
     */
    @NotNull(message = "盘点时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date checkTime;

    /**
     * 合计数量
     */
    @DecimalMin(value = "0", message = "合计数量不能小于0", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalCount;

    /**
     * 合计金额，单位：元
     */
    @DecimalMin(value = "0", message = "合计金额不能小于0", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal totalPrice;

    /**
     * 状态
     */
    @NotNull(message = "状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer status;

    /**
     * 备注
     */
    private String remark;

    /**
     * 附件 URL
     */
    private String fileUrl;

    /**
     * 创建部门
     */
    private Long createDept;

    /**
     * 租户编号
     */
    private String tenantId;

    // 查询参数
    /**
     * 盘点单号（查询用）
     */
    private String searchNo;

    /**
     * 状态列表（查询用）
     */
    private Integer[] statusList;

    /**
     * 盘点开始时间（查询用）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date checkStartTime;

    /**
     * 盘点结束时间（查询用）
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date checkEndTime;

    /**
     * 最小金额（查询用）
     */
    private BigDecimal minPrice;

    /**
     * 最大金额（查询用）
     */
    private BigDecimal maxPrice;

    /**
     * 创建部门名称（查询用）
     */
    private String createDeptName;

}
